// #include <iostream>
// #include <cassert>
// #include <sys/types.h>
// #include <signal.h>
 
// using namespace std;
 
// static void Usage(const string &proc)
// {
//     cout << "\nUsage:" << proc << " pid signo\n"
//          << endl;
// }
 
// //  ./mykill 2 pid
// int main(int argc, char *argv[])
// {
//     if (argc != 3)
//     {
//         Usage(argv[0]);
//         exit(1);
//     }
//     int signo = atoi(argv[1]);
//     int sigpid = atoi(argv[2]);
//     int n = kill(sigpid, signo);
//     assert(n == 0);
 
//     return 0;
// }



// #include <iostream>
// #include <cassert>
// #include <unistd.h>
// #include <stdlib.h>
// #include <sys/types.h>
// #include <signal.h>
 
// using namespace std;
 
// int count = 0;
 
// void sigcath(int sig)
// {
//     cout << "final count: "
//          << " " << count << endl;
// }
 
// int main()
// {
//     alarm(1);
//     signal(SIGALRM, sigcath);
 
//     while (true)
//         count++;
 
//     return 0;
// }



// #include <iostream>
// #include <cassert>
// #include <unistd.h>
// #include <stdlib.h>
// #include <sys/types.h>
// #include <signal.h>
 
// using namespace std;
 
// uint64_t count = 0;
 
// void sigcath(int sig)
// {
//     cout << "final count: "
//          << " " << count << endl;
 
//         alarm(1);
// }
 
// int main()
// {
//     alarm(1);
//     signal(SIGALRM, sigcath);
 
//     while (true)
//         count++;
 
//     return 0;
// }


#include <iostream>
#include <cassert>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <signal.h>
 
using namespace std;
 
void hander(int sig)
{
    cout << "我捕捉了一个信号："
         << " " << sig << endl;
    sleep(1);
}
 
int main()
{
    signal(SIGFPE, hander);
    int a = 100;
    a /= 0;
 
    return 0;
}